package top.sqdpt.third.enums;

import lombok.Getter;

/**
 * 天气查询类型
 * 0 实时天气
 * 1 3天
 * 2 7天
 * 3 10天
 * 4 15天
 */
@Getter
public enum WeatherQueryType {
    /**
     * 实时天气
     */
    REAL_TIME(0, "实时天气"),

    /**
     * 3天天气预报
     */
    THREE_DAYS(1, "3天天气预报"),

    /**
     * 7天天气预报
     */
    SEVEN_DAYS(2, "7天天气预报"),

    /**
     * 10天天气预报
     */
    TEN_DAYS(3, "10天天气预报"),

    /**
     * 15天天气预报
     */
    FIFTEEN_DAYS(4, "15天天气预报"),

    /**
     * 30天
     */
    THIRTY_DAYS(5, "30天天气预报");


    private final int code;
    private final String description;

    /**
     * 构造函数
     *
     * @param code        类型代码
     * @param description 类型描述
     */
    WeatherQueryType(int code, String description) {
        this.code = code;
        this.description = description;
    }

    /**
     * 获取类型代码
     *
     * @return 类型代码
     */
    public int getCode() {
        return code;
    }

    /**
     * 获取类型描述
     *
     * @return 类型描述
     */
    public String getDescription() {
        return description;
    }

    /**
     * 根据类型代码获取对应的枚举值
     *
     * @param code 类型代码
     * @return 对应的枚举值，如果未找到则返回 null
     */
    public static WeatherQueryType fromCode(int code) {
        for (WeatherQueryType type : values()) {
            if (type.getCode() == code) {
                return type;
            }
        }
        return null;
    }
}